Python进阶学习笔记

Python 进阶学习笔记
一、模块
    
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

__author__ = 'Michael Liao'

import sys

deftest():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    test()

第1行和第2行是标准注释,第一行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第二行注释表示.py文件本身使用标准UTF-8编码。
第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释
第6行使用__author__变量把作者写进去
以上是Python模块的标准文件模板
当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,所以判断__name__是否是__main__可以让一个模块通过命令行运行时执行一些额外的代码,最常见的是运行测试。

在模块中通过_前缀来实现private。
类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途。
类似_xxx和__xxx这样的函数或变量就是private的,不应该被直接引用。

Python中,安装第三方模块是通过包管理工具pip完成的。
第三方库都会在Python官方的pypi.python.org网站注册。

pip install xxx

二、面向对象编程
(1)类和实例
            
class Student(object):
    def__init__(self, name, score):
        self.name = name
        self.score = score
    
    defprint_score(self):
        print('%s: %s' % (self.name, self.score))

bart = Student()
class后面紧接着是类名,即Student,类名通常是大写开头单词,紧接着是(object),表示该类是从哪个类继承下来的,通常,如果没有合适的继承类,就是用object类,这是所有类都会继承的类。
(2)获取对象信息
使用type()函数可以判断基本的对象类型。
判断一个对象是否是函数可以使用types模块中定义的常量:

>>> import types
>>> deffn():
...     pass
...
>>> type(fn)==types.FunctionType
True
>>> type(abs)==types.BuiltinFunctionType
True
>>> type(lambda x: x)==types.LambdaType
True
>>> type((x for x in range(10)))==types.GeneratorType
True